<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    /* es6 的类的写法
        1. 对象属性
        2. 对象方法
        */
    class Person {

        constructor(name, age) {
            /* this.属性名称 = 初始化的值，值可以是外部传递，也可以是自己手工写死 */
            this.username = name;
            this.age = age;
            // 自己写死的属性 一般自己写死的属性代表是私有属性，外部不要访问（约定俗成）
            this._salary = 2000;

        }

        say() {
            console.log(`${this.username} say hello`);
        }
        /* 在构造函数里面和 class 里面写方法都是实例对象的方法和属性 */

        /* 如果我们想在类的本身上面增加属性和方法，该如何处理？
            如果是类的属性我们称之为静态属性；
            如果是方法我们称之为静态方法 
        */
        static getInfo() {
            console.log('静态方法');
        }
        static type = 'yellow human';

    }
    const p2 = new Person('mark', 23);
    console.log(p2);

    // TypeError: p2.getInfo is not a function getInfo 是静态方法
    // p2.getInfo();

    Person.getInfo();
    console.log(Person.type);// 静态属性



</script>

</html>